import globals from 'globals'
// import pluginJs from '@eslint/js'
import tseslint from 'typescript-eslint'
import pluginVue from 'eslint-plugin-vue'
import pluginPrettierRecommendedConfigs from 'eslint-plugin-prettier/recommended'
import parserVue from 'vue-eslint-parser' //解决报错defineProps<{ msg: string }>() // Parsing error: Unexpected token )eslint

export default [
	// eslint 默认推荐规则
	// pluginJs.configs.recommended,
	// ts 默认推荐规则
	// ...tseslint.configs.recommended,
	// vue3 基础推荐规则
	...pluginVue.configs['flat/recommended'],
	// prettier 默认推荐规则
	pluginPrettierRecommendedConfigs,
	{
		ignores: [
			'**/.*',
			'**/*.d.ts',
			'**/*.config.js',
			'**/*.config.ts',
			'dist/**',
			'node_modules/**',
			'**/eslint.config.js',
		], //排除某些文件不应用规则
		languageOptions: {
			globals: {
				...globals.browser,
				...globals.es2020,
				...globals.node,
			},
			ecmaVersion: 2020,
			parser: parserVue,
			parserOptions: {
				parser: tseslint.parser,
			},
		},
		rules: {
			// 可添加一些自定义规则
			'un-def': off, //关闭校验未定义
			'comma-dangle': ['error', 'always-multiline'], //要求在对象和数组字面上统一使用尾随逗号
			semi: [2, 'never'], //去掉分号
			'no-unused-vars': 'error', // 未使用变量
			'@typescript-eslint/no-unused-vars': ['off', { caughtErrors: 'none' }], // 未使用变量
			'vue/no-unused-vars': ['off', { caughtErrors: 'none' }], // 未使用变量
			'vue/v-on-event-hyphenation': 'off', // html元素上事件函数名使用短横线连接
			'vue/multi-word-component-names': ['off'], // 组件名应该多个词组成
			'vue/require-default-prop': 'warn', // props 参数 应该有默认值
			'vue/no-v-html': 'off', // 不推荐使用 v-html
			'vue/no-mutating-props': 'warn', // props 参数应该不能直接修改
			'@typescript-eslint/no-explicit-any': 'off', //关闭any类型的警告
		},
	},
]
